<?php
require_once __DIR__ . '/../common/functions.php';
checkLogin(); // 验证管理员登录

$action = $_REQUEST['action'] ?? '';
global $pdo;

try {
    switch ($action) {
        // 新增版本
        case 'add':
            $versionCode = trim($_POST['version_code'] ?? '');
            $releaseDate = $_POST['release_date'] ?? '';
            $newFeatures = trim($_POST['new_features'] ?? '');
            $bugFixes = trim($_POST['bug_fixes'] ?? '');
            $optimizations = trim($_POST['experience_optimizations'] ?? '');
            $isCurrent = intval($_POST['is_current'] ?? 0);

            // 验证必填项
            if (empty($versionCode) || empty($releaseDate)) {
                error('版本号和发布时间不能为空');
            }

            // 验证版本号格式
            if (!preg_match('/^V\d+\.\d+\.\d+$/', $versionCode)) {
                error('版本号格式错误，需符合：V主版本.次版本.修订号（如V1.2.3）');
            }

            // 检查版本号是否已存在
            $checkStmt = $pdo->prepare("SELECT id FROM version_detail WHERE version_code = ?");
            $checkStmt->execute([$versionCode]);
            if ($checkStmt->fetch()) {
                error('该版本号已存在');
            }

            // 校验版本号递增
            $lastStmt = $pdo->query("SELECT version_code FROM version_detail ORDER BY release_date DESC LIMIT 1");
            $lastVersion = $lastStmt->fetchColumn();
            if ($lastVersion) {
                preg_match('/V(\d+)\.(\d+)\.(\d+)/', $lastVersion, $lastMatches);
                preg_match('/V(\d+)\.(\d+)\.(\d+)/', $versionCode, $newMatches);
                
                $isValid = false;
                if ($newMatches[1] > $lastMatches[1]) $isValid = true;
                else if ($newMatches[1] == $lastMatches[1]) {
                    if ($newMatches[2] > $lastMatches[2]) $isValid = true;
                    else if ($newMatches[2] == $lastMatches[2] && $newMatches[3] > $lastMatches[3]) $isValid = true;
                }
                if (!$isValid) {
                    error('版本号需递增（当前最新版本：' . $lastVersion . '）');
                }
            }

            // 设为当前版本时，取消其他版本标记
            if ($isCurrent) {
                $pdo->exec("UPDATE version_detail SET is_current = 0");
            }

            // 插入数据
            $stmt = $pdo->prepare("INSERT INTO version_detail (
                version_code, release_date, is_current, 
                new_features, bug_fixes, experience_optimizations
            ) VALUES (?, ?, ?, ?, ?, ?)");
            $stmt->execute([
                $versionCode, $releaseDate, $isCurrent,
                $newFeatures, $bugFixes, $optimizations
            ]);

            success([], '新增版本成功');
            break;

        // 编辑版本
        case 'edit':
            $id = intval($_POST['id'] ?? 0);
            $versionCode = trim($_POST['version_code'] ?? '');
            $releaseDate = $_POST['release_date'] ?? '';
            $newFeatures = trim($_POST['new_features'] ?? '');
            $bugFixes = trim($_POST['bug_fixes'] ?? '');
            $optimizations = trim($_POST['experience_optimizations'] ?? '');
            $isCurrent = intval($_POST['is_current'] ?? 0);

            if ($id <= 0 || empty($versionCode) || empty($releaseDate)) {
                error('参数错误');
            }

            // 验证版本号格式
            if (!preg_match('/^V\d+\.\d+\.\d+$/', $versionCode)) {
                error('版本号格式错误（如V1.2.3）');
            }

            // 检查版本号是否重复（排除当前ID）
            $checkStmt = $pdo->prepare("SELECT id FROM version_detail WHERE version_code = ? AND id != ?");
            $checkStmt->execute([$versionCode, $id]);
            if ($checkStmt->fetch()) {
                error('该版本号已存在');
            }

            // 设为当前版本时，取消其他版本标记
            if ($isCurrent) {
                $pdo->exec("UPDATE version_detail SET is_current = 0");
            }

            // 更新数据
            $stmt = $pdo->prepare("UPDATE version_detail SET 
                version_code = ?, 
                release_date = ?, 
                is_current = ?, 
                new_features = ?, 
                bug_fixes = ?, 
                experience_optimizations = ? 
                WHERE id = ?");
            $stmt->execute([
                $versionCode, $releaseDate, $isCurrent,
                $newFeatures, $bugFixes, $optimizations, $id
            ]);

            success([], '编辑版本成功');
            break;

        // 删除版本
        case 'delete':
            $id = intval($_POST['id'] ?? 0);
            if ($id <= 0) {
                error('无效的版本ID');
            }

            // 检查是否为当前版本
            $checkStmt = $pdo->prepare("SELECT is_current FROM version_detail WHERE id = ?");
            $checkStmt->execute([$id]);
            $version = $checkStmt->fetch();
            if (!$version) {
                error('版本不存在');
            }
            if ($version['is_current']) {
                error('不能删除当前版本，请先将其他版本设为当前版本');
            }

            // 执行删除
            $stmt = $pdo->prepare("DELETE FROM version_detail WHERE id = ?");
            $stmt->execute([$id]);
            success([], '删除版本成功');
            break;

        default:
            error('无效操作');
    }
} catch (PDOException $e) {
    error('操作失败：' . $e->getMessage());
}